package cn.tedu.interceptor;

import cn.tedu.pojo.User;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;

/**
 * 自定义资源拦截器
 */
public class ResourceIntercepter implements HandlerInterceptor {
    private List<String> ignoreUrl;
    public ResourceIntercepter(List<String> ignoreUrl) {
        this.ignoreUrl = ignoreUrl;
    }

    // 重写功能方法，实现业务拦截
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // 只做登录的校验
        User user = (User)request.getSession().getAttribute("userSession");
        // 获取当前用户的请求路径
        String uri = request.getRequestURI();

        if (user != null){
            // 只要能进来，说明此用户已登录
            // 下一步判断时管理员登录还是普通用户登录
            if (user.getUserRole() == 1){
                // 是管理员，放行
                return true;
            }else if (user.getUserRole() !=1){
                // 普通用户
                for (String u : ignoreUrl){ // 遍历所有要被忽略的路径，如果用户的请求路径中包含了，则放行
                    if (uri.indexOf(u) >=0 ){
                        return true;
                    }
                }
            }
        }

        if (uri.indexOf("login") >=0 ){
            return true;
        }

        // 程序能走到这里，说明用户没有登录
        request.setAttribute("msg","您还未登录，请先登录！");
        request.getRequestDispatcher("/WEB-INF/jsp/login.jsp")
                .forward(request,response);
        return false;
    }
}
